/*
 *
 *
 */

package steg.gui.steg;

import java.awt.Frame;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import steg.steki.StegException;
import steg.steki.wav.PlikWAV;
import steg.utils.MyFileFilter;

/**
 *
 * @author 
 */
public class JDialogPlikWAV extends JDialogPlik {


// ------------------------------- ZIENNE PRYWATNE -----------------------------
    //-- stałe
    //-- czy
    //-- zmienne

// ------------------------------- ZIENNE PUBLICZNE
    //-- czy
    //-- zmienne

// ------------------------------- KONSTRUKTORY
    public JDialogPlikWAV ( Frame owner, boolean modal){
        super(owner, "", modal);
        initTilte("WAV steganografia");
        initPlikIcon("wav64.png");
        initStartOpcje();

    }

// ******************************** PUBLICZNE **********************************
// *****************************************************************************
// ------------------------------- FUNKCJE KRYTYCZNE ---------------------------
    @Override
    protected void steganuj(String nazwa) {
        try {

            sekret.setSecretAsText( czyText() );
            sekret.setBitowNaSample( getBitowNaSample() );
            sekret.setZnacznik( czyTag());
            sekret.setCzyZip( czyGZIP());
            sekret.setCzyHaslo( czyHaslo());
            if(sekret.isCzyHaslo())
                sekret.setSekretHaslo( getHaslo());

            
            plikStegowany.steg( new File( nazwa ), sekret);


        } catch (StegException ex) {

                raportError(ex,ERROR_INNY,"Błąd podczas steganografii WAV");
                JOptionPane.showMessageDialog(this,ex.getStegMassage(), "Błąd steganograficzny.",
                    JOptionPane.ERROR_MESSAGE);
        } catch (IOException ex) {

                raportError(ex,ERROR_INNY,"Błąd podczas steganografii WAV");
                JOptionPane.showMessageDialog(this, "Nieznany błąd podczas próby stganografi.\n","Błąd steganograficzny.",
                    JOptionPane.ERROR_MESSAGE);
        }

    }

    @Override
    protected void loadStegPlik() {

        // a. wczytaj plik
        JFileChooser chooser = new JFileChooser();
        MyFileFilter mff = new MyFileFilter();
        mff.setExtencion(".wav");

        chooser.addChoosableFileFilter(mff);
        chooser.setCurrentDirectory(new File(PATH_LST_OPEN));

        int returnVal = chooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {

            try {

                File plik = chooser.getSelectedFile();
                PATH_LST_OPEN = plik.getPath();


                // 1. init plikStegowany

                plikStegowany = new PlikWAV();
                plikStegowany.init(new File(PATH_LST_OPEN));
                setMetaDane(plikStegowany.getMetaDane());


            } catch (StegException ex) {
                raportError(ex, ERROR_STEG_PLIK,"błąd stg WAV");
                JOptionPane.showMessageDialog(this, ex.getStegMassage(),"Błąd steganografizcny",
                        JOptionPane.ERROR_MESSAGE);

            } catch (IOException ex) {
                raportError(ex,ERROR_STEG_PLIK,"bład wczytu WAV");
                JOptionPane.showMessageDialog(this, "Błąd wczytania pliku.\nplik("+PATH_LST_OPEN+")","Błąd!",
                        JOptionPane.ERROR_MESSAGE);

            } catch (Exception ex) {
                //error nie znany, lepiej wypłapywać wszystko, potem można jak co czeknąć co jest 5
                raportError(ex,ERROR_STEG_PLIK,"bład przy wczytywaniu WAV");
                JOptionPane.showMessageDialog(this, "Błąd wczytania pliku.\nplik("+PATH_LST_OPEN+")","Nieznany błąd!",
                        JOptionPane.ERROR_MESSAGE);

            }
        }
    }
// ------------------------------- FUNKCJE DODATKOWE ---------------------------
    @Override
    protected void initStartOpcje() {
        super.setIsGZIP(true, true, true);
        super.setIsHaslo(true, true, false);
        super.setIsTag(true, true, true);
    }

    @Override
    protected void zakoncz() {
        // do nic
    }


// ------------------------------- FUNKCJE dziwne ------------------------------



// ******************************** PRYWATNE ***********************************
// *****************************************************************************
// ------------------------------- FUNKCJE KRYTYCZNE


// ------------------------------- FUNKCJE  POMOCNICZE CZY/SET -----------------


}
